package com.alexjavi.eneagrama.testsinstintos;

import java.util.HashMap;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.actionbar.MiBaseActivity;
import com.witejavi.eneagrama.R;
import com.alexjavi.eneagrama.login.EnviarInfoTestsAsyncTask;

public class TestInstintosUno extends MiBaseActivity {
	
	HashMap<Integer, HashMap<Integer, Integer>> preguntas;
	
	RadioGroup radiogroup1, radiogroup2, radiogroup3, radiogroup4, radiogroup5, radiogroup6, radiogroup7, 
	radiogroup8, radiogroup9;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		activarActionBar(true);
		
		crearRespuestas();
		
		Button boton = (Button) findViewById(R.id.test_1_boton);		
		boton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				
				radiogroup1 =	(RadioGroup) findViewById(R.id.radiogroup_1);
				radiogroup2 =	(RadioGroup) findViewById(R.id.radiogroup_2);
				radiogroup3 =	(RadioGroup) findViewById(R.id.radiogroup_3);
				radiogroup4 =	(RadioGroup) findViewById(R.id.radiogroup_4);
				radiogroup5 =	(RadioGroup) findViewById(R.id.radiogroup_5);
				radiogroup6 =	(RadioGroup) findViewById(R.id.radiogroup_6);
				radiogroup7 =	(RadioGroup) findViewById(R.id.radiogroup_7);				
				radiogroup8 =	(RadioGroup) findViewById(R.id.radiogroup_8);
				radiogroup9 =	(RadioGroup) findViewById(R.id.radiogroup_9);
				
				// compruebo que todos los radios esten rellenos
				if (todasContestadas()){
					
					EnviarInfoTestsAsyncTask.registrarTestHechoUnaVez(1, getApplicationContext());
					
					// abrir ventana con los resultados 
					int[] resultados = new int[9];
					
					resultados[0] = radiogroup1.indexOfChild(findViewById(radiogroup1.getCheckedRadioButtonId()));
					resultados[1] = radiogroup2.indexOfChild(findViewById(radiogroup2.getCheckedRadioButtonId()));
					resultados[2] = radiogroup3.indexOfChild(findViewById(radiogroup3.getCheckedRadioButtonId()));
					resultados[3] = radiogroup4.indexOfChild(findViewById(radiogroup4.getCheckedRadioButtonId()));
					resultados[4] = radiogroup5.indexOfChild(findViewById(radiogroup5.getCheckedRadioButtonId()));
					resultados[5] = radiogroup6.indexOfChild(findViewById(radiogroup6.getCheckedRadioButtonId()));
					resultados[6] = radiogroup7.indexOfChild(findViewById(radiogroup7.getCheckedRadioButtonId()));
					resultados[7] = radiogroup8.indexOfChild(findViewById(radiogroup8.getCheckedRadioButtonId()));
					resultados[8] = radiogroup9.indexOfChild(findViewById(radiogroup9.getCheckedRadioButtonId()));
					
					int transmisor = 0;
					int social = 0;
					int conservacion = 0;
					
					for (int i = 0; i < resultados.length; i++){
						switch (obtenerNumeroInstinto(i, resultados[i])) {
							case 0: transmisor++; break;
							case 1: social++; break;
							case 2: conservacion++; break;
							default:break;
						}
					}
					
					Intent intent = new Intent(TestInstintosUno.this, TestInstintosResultados.class);	
					intent.putExtra("transmisor", transmisor);
					intent.putExtra("social", social);
					intent.putExtra("conservacion", conservacion);
					intent.putExtra("test2", false);
					
					startActivity(intent);		
					
					finish();
					
				} else {
					Toast.makeText(TestInstintosUno.this, mensajeNoContestadas(), Toast.LENGTH_SHORT).show();
				}
			}
		});

	}
		
	@SuppressLint("UseSparseArrays")
	private void crearRespuestas() {
		HashMap<Integer, Integer> respuestas;
		preguntas = new HashMap<Integer, HashMap<Integer, Integer>>();		//T S C
		
		// p1
		respuestas = new HashMap<Integer, Integer>();	
		respuestas.put(0, 0); // T
		respuestas.put(1, 1); // S
		respuestas.put(2, 2); // C
		preguntas.put(0, respuestas);
		
		// p2
		respuestas = new HashMap<Integer, Integer>();	
		respuestas.put(0, 2); // C
		respuestas.put(1, 1); // S
		respuestas.put(2, 0); // T
		preguntas.put(1, respuestas);
		
		// p3
		respuestas = new HashMap<Integer, Integer>();	
		respuestas.put(0, 0); // T
		respuestas.put(1, 2); // C
		respuestas.put(2, 1); // S
		preguntas.put(2, respuestas);	
		
		// p4
		respuestas = new HashMap<Integer, Integer>();	
		respuestas.put(0, 0); // T
		respuestas.put(1, 1); // S
		respuestas.put(2, 2); // C
		preguntas.put(3, respuestas);
		
		// p5
		respuestas = new HashMap<Integer, Integer>();	
		respuestas.put(0, 0); // T
		respuestas.put(1, 1); // S
		respuestas.put(2, 2); // C
		preguntas.put(4, respuestas);
		
		// p6
		respuestas = new HashMap<Integer, Integer>();	
		respuestas.put(0, 0); // T
		respuestas.put(1, 1); // S
		respuestas.put(2, 2); // C
		preguntas.put(5, respuestas);
		
		// p7
		respuestas = new HashMap<Integer, Integer>();	
		respuestas.put(0, 0); // T
		respuestas.put(1, 1); // S
		respuestas.put(2, 2); // C
		preguntas.put(6, respuestas);
		
		// p8
		respuestas = new HashMap<Integer, Integer>();	
		respuestas.put(0, 0); // T
		respuestas.put(1, 1); // S
		respuestas.put(2, 2); // C
		preguntas.put(7, respuestas);
		
		// p9
		respuestas = new HashMap<Integer, Integer>();	
		respuestas.put(0, 0); // T
		respuestas.put(1, 1); // S
		respuestas.put(2, 2); // C
		preguntas.put(8, respuestas);
	
	}

	private int obtenerNumeroInstinto(int pregunta, int respuesta) {
		return preguntas.get(pregunta).get(respuesta);
	}
	
	private String  mensajeNoContestadas() {
		String str = "Por favor, conteste las preguntas: ";
		
		str = radiogroup1.getCheckedRadioButtonId() == -1 ? str + 1 + ", " : str;
		str = radiogroup2.getCheckedRadioButtonId() == -1 ? str + 2 + ", " : str;
		str = radiogroup3.getCheckedRadioButtonId() == -1 ? str + 3 + ", " : str;
		str = radiogroup4.getCheckedRadioButtonId() == -1 ? str + 4 + ", " : str;
		str = radiogroup5.getCheckedRadioButtonId() == -1 ? str + 5 + ", " : str;
		str = radiogroup6.getCheckedRadioButtonId() == -1 ? str + 6 + ", " : str;
		str = radiogroup7.getCheckedRadioButtonId() == -1 ? str + 7 + ", " : str;
		str = radiogroup8.getCheckedRadioButtonId() == -1 ? str + 8 + ", " : str;
		str = radiogroup9.getCheckedRadioButtonId() == -1 ? str + 9 + ", " : str;
		
		str = str.substring(0, str.length()-2);
		
		return str;
	}
	
	private boolean todasContestadas() {
		
		return !(radiogroup1.getCheckedRadioButtonId() == -1 || radiogroup2.getCheckedRadioButtonId() == -1 
				|| radiogroup3.getCheckedRadioButtonId() == -1 || radiogroup4.getCheckedRadioButtonId() == -1 
				|| radiogroup5.getCheckedRadioButtonId() == -1 || radiogroup6.getCheckedRadioButtonId() == -1 
				|| radiogroup7.getCheckedRadioButtonId() == -1 || radiogroup8.getCheckedRadioButtonId() == -1
				|| radiogroup9.getCheckedRadioButtonId() == -1);
	}

	
	@Override
	protected int getLayoutResource() {
		return R.layout.test_instintos_uno;
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case android.R.id.home:
			finish();
			return true;
		}

		return super.onOptionsItemSelected(item);
	}
		
}
